package Freya.base;

public class Methods04 {
    /*递归
    递归就是 A 方法调用 A 方法 ！ 就是自己调用自己

    利用递归可以用一些简单的程序来解决一些复杂的问题 。 它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解 ， 递归策略只需要少量的程序就可以描述出解题过程所需的多次重复计算 ， 大大减少了程序的代码量 。 递归的能力用于有限的语句来定义对象的无限集合。

    递归结构包括两部分：
        递归头 ： 什么时候不调用自身方法 。 如果没有头 ， 将陷入死循环 。
        递归体 ： 什么时候需要调用自身方法 。
    * */
    public static void main(String[] args) {
        int sum = f(5);
        System.out.println(sum);
    }
    //n!
    public static int f(int n){
        if (n == 0) {
            return 1;
        }else {
            return n*f(n-1);
        }
    }

    //小练习 ：写一个计算器 ， 要求实现加减乘除功能 ， 并且能够循环接收新的数据 ， 通过用户交互实现 。
    //推荐思路 ： 写 4 个方法    利用循环 + swith 进行用户交互
    //传递需要操作的两个数
    //输出结果
}
